#ifndef NANE_ISOUNDCODECSYSTEM_H
#   define  NANE_ISOUNDCODECSYSTEM_H

#   include "nane/CodecSystem/ICodecSystem.h"
#   include "nane/core/ISeekable.h"

namespace nane 
{
    struct ISoundDecoder
        : public IDecoder
    {
        virtual uint32 GetFrequency() = 0;
        virtual uint16 GetChannels() = 0;
        virtual uint16 GetBitsPerSample() = 0;
        virtual uint32 GetLengthInBytes() = 0;
    };
    
    struct ISoundEncoder
        : public IEncoder
    {
        
    };
    
    struct ISoundCodecSystem
        : public ICodecSystem
    {
        virtual ISoundDecoder* CreateDecoder( IInputRef* _input ) = 0;
        virtual ISoundDecoder* CreateDecoder( IInputSeekableRef* _inputSeekable ) = 0;
        virtual ISoundEncoder* CreateEncoder( IOutputRef* _output ) = 0;
    };
}   // namespace nane

#endif	// NANE_ISOUNDCODECSYSTEM_H
